# CLI

Rsbuild comes with a lightweight CLI that includes commands such as `dev` and `build`.

## rsbuild -h

To view all available CLI commands, run the following command in the project directory:

```bash
npx rsbuild -h
```

The output is shown below:

```text
Usage: rsbuild <command> [options]

Options:
  -V, --version      output the version number
  -h, --help         display help for command

Commands:
  dev [options]      starting the dev server
  build [options]    build the app for production
  preview [options]  preview the production build locally
  inspect [options]  inspect the Rspack and Rsbuild configs
  help [command]     display help for command
```

## rsbuild dev

The `rsbuild dev` command is used to start a local dev server and compile the source code for development.

```bash
Usage: rsbuild dev [options]

Options:
  -o, --open [url]      open the page in browser on startup
  --port <port>         specify a port number for Rsbuild Server to listen
  --host <host>         specify the host that the Rsbuild Server listens to
  -c --config <config>  specify the configuration file, can be a relative or absolute path
  --env-mode <mode>     specify the env mode to load the `.env.[mode]` file
  -h, --help            display help for command
```

### Opening Page

The `--open` option allows you to automatically open a page when starting the dev server, which is equivalent to setting [server.open](/config/server/open) to `true`.

```bash
rsbuild dev --open
```

The `--open` option also supports specifying the URL to be opened, for example:

```bash
rsbuild dev --open http://localhost:3000/foo
```

The `--open` option can also be abbreviated to `-o`:

```bash
rsbuild dev -o
```

## rsbuild build

The `rsbuild build` command will build the outputs for production in the `dist/` directory by default.

```bash
Usage: rsbuild build [options]

Options:
  -w --watch            turn on watch mode, watch for changes and rebuild
  -c --config <config>  specify the configuration file, can be a relative or absolute path
  --env-mode <mode>     specify the env mode to load the `.env.[mode]` file
  -h, --help            display help for command
```

## rsbuild preview

The `rsbuild preview` command is used to preview the production build outputs locally. Note that you need to execute the `rsbuild build` command beforehand to generate the build outputs.

```bash
Usage: rsbuild preview [options]

Options:
  -o, --open [url]      open the page in browser on startup
  --port <port>         specify a port number for Rsbuild Server to listen
  --host <host>         specify the host that the Rsbuild Server listens to
  -c --config <config>  specify the configuration file, can be a relative or absolute path
  --env-mode <mode>     specify the env mode to load the `.env.[mode]` file
  -h, --help            display help for command
```

:::tip
The preview command is only used for local preview. Do not use it for production servers, as it is not designed for that.
:::

## rsbuild inspect

The `rsbuild inspect` command is used to view the Rsbuild config and Rspack config of the project.

```bash
Usage: rsbuild inspect [options]

Options:
  --env <env>           view the configuration in the target environment (default: "development")
  --output <output>     Specify the path to output in the dist (default: "/")
  --verbose             Show the full function in the result
  -c --config <config>  specify the configuration file, can be a relative or absolute path
  --env-mode <mode>     specify the env mode to load the `.env.[mode]` file
  -h, --help            show command help
```

When you run the command `npx rsbuild inspect` in the project root directory, the following files will be generated in the `dist` directory of the project:

- `rsbuild.config.mjs`: Represents the Rsbuild configuration used during the build.
- `rspack.config.web.mjs`: Represents the Rspack configuration used during the build.

```bash
➜ npx rsbuild inspect

Inspect config succeed, open following files to view the content:

  - Rsbuild Config: /project/dist/rsbuild.config.mjs
  - Rspack Config (web): /project/dist/rspack.config.web.mjs
```

### Specifying Environment

By default, the inspect command outputs the configuration for the development environment. You can add the `--env production` option to output the configuration for the production build:

```bash
rsbuild inspect --env production
```

### Verbose content

By default, the inspect command omits the content of functions in the configuration object. You can add the `--verbose` option to output the complete content of functions:

```bash
rsbuild inspect --verbose
```

### Multiple Targets

If the current project has multiple build targets, such as building browser artifact and Node.js artifact simultaneously, multiple Rspack configuration files will be generated in the `dist` directory.

```bash
➜ npx rsbuild inspect

Inspect config succeed, open following files to view the content:

  - Rsbuild Config: /project/dist/rsbuild.config.mjs
  - Rspack Config (web): /project/dist/rspack.config.web.mjs
  - Rspack Config (node): /project/dist/rspack.config.node.mjs
```
